--13/06/2010 javier07b9@hotmail.com -- EUPHORIA LANGUAGE -- Capítulo 6 - Sonido con SDL ----------------------------------------------------------------------- ----------------------------------------------------------------------- -- Incluimos las funciones SDL include SDL_Wrap.ew include SDL_Mixer.ew atom dummy, chord integer channel, a -------------- INICIALIZACIÓN DEL SISTEMA DE AUDIO ------------------- dummy = SDL_InitSubSystem(SDL_INIT_AUDIO) if dummy = -1 then puts(1, "SDL_InitSubSystem tuvo un fallo!\n") end if dummy = Mix_OpenAudio(22050,AUDIO_U16,2,1024) if dummy = -1 then puts(1, "Mix_OpenAudio tuvo un fallo!\n") end if ---------------------------------------------------------------------- chord=Mix_LoadWAV("\\Windows\\Media\\chord.wav") channel=0 -- Ahora vamos a crear un proceso para el canal de audio. Parece ser -- que hoy en dia los sistemas de audio en placa cuentan al menos con -- 8 canales de sonido, ello permite ejecutar en el sistema 8 sonidos -- a la vez. Por eso este proceso ejecuta un sonido en el canal 0, si -- se desea ejecutar otro lo hará en el 1 y así hasta llegar al 7, -- entonces la variable channel se prepara para que el siguiente -- sonido lo ejecute en el canal 0, es un bucle. global procedure snd_canal(atom lpnz) atom dumme dumme=Mix_PlayChannel(channel,lpnz, 0) channel=channel+1 if channel=8 then channel=0 end if end procedure -- Avisamos de las teclas a pulsar. puts(1,"Pulse espacio para el sonido.") puts(1,"\nPulse escape para finalizar.\n") a=0 -- Utilizamos el sistema de eventos por teclado de Euphoria para detectar -- las pulsaciones, get_key(). while a=0 do if get_key()=32 then snd_canal(chord) puts(1,"\nchord.wav...") end if if get_key()=27 then a=1 end if end while -------------------------------------------------------------------- -- Liberamos el sonido en ram Mix_FreeChunk(chord) -- y cerramos el sistema de audio Mix_CloseAudio() -- cerramos también SDL y finaliza el programa SDL_Quit() -- Mi conclusión comparando con el capítulo 5 sobre la libreria Windows -- es que SDL_Mixer.dll aporta lo suficiente en sonido para ejecutar -- cualquier juego, y mejora bastante las capacidades que winmm.dll nos -- ofrecia. -- 13/06/2010 javier07b9@hotmail.com